from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from flask_jwt_extended import JWTManager  # 新增: JWT支持
from config import Config

# 初始化扩展，但还不绑定 app
db = SQLAlchemy()
ma = Marshmallow()
jwt = JWTManager()  # 新增: 创建JWT管理器


def create_app():
    """应用工厂函数"""

    # 创建 Flask 应用实例
    app = Flask(__name__)

    # 从配置类加载配置
    app.config.from_object(Config)

    # 初始化扩展
    db.init_app(app)
    ma.init_app(app)
    jwt.init_app(app)  # 新增: 初始化JWT

    # 注册蓝图
    from app.routes.routes import main
    app.register_blueprint(main)

    return app